🗃️ DAFTAR TABEL & FUNGSINYA + RELASI
🔹 toko
Fungsi: Menyimpan data cabang toko/kuliner.

Kolom utama: id_toko, nama_toko, kode_toko, status_aktif

Relasi:

Digunakan oleh: pengguna, barang, pembelian, penjualan, stok, mutasi, dll.

FK di tabel lain: id_toko

🔹 pengguna
Fungsi: Menyimpan user login (admin, kasir, staff).

Kolom utama: id_pengguna, nama_lengkap, username, id_role, id_toko

Relasi:

id_toko → FK ke toko.id_toko

id_role → FK ke role.id_role

Digunakan di: penjualan, pembelian, retur_pembelian, retur_penjualan

🔹 role
Fungsi: Menyimpan daftar peran pengguna (kasir, admin, super admin, dll).

Kolom utama: id_role, nama_role

🔹 pelanggan
Fungsi: Menyimpan data pelanggan (optional).

Kolom utama: id_pelanggan, nama_pelanggan, telepon

🔹 supplier
Fungsi: Menyimpan data pemasok barang.

Kolom utama: id_supplier, nama_supplier, alamat, telepon

🔹 barang
Fungsi: Menyimpan data semua produk/barang.

Kolom utama: id_barang, nama_barang, kode_barang, id_toko

Relasi:

id_toko → FK ke toko.id_toko

Digunakan di: detail_penjualan, detail_pembelian, stok, mutasi, retur

🔹 metode_pembayaran
Fungsi: Menyimpan metode pembayaran (tunai, transfer, QRIS, dll).

Kolom utama: id_metode, nama_metode

📦 Transaksi & Detail
🔹 pembelian
Fungsi: Menyimpan transaksi pembelian barang dari supplier.

Kolom utama: id_pembelian, id_supplier, id_pengguna, id_toko, tanggal_pembelian, total_pembelian, dll

Relasi:

id_supplier → FK ke supplier

id_pengguna → FK ke pengguna

id_toko → FK ke toko

Digunakan oleh: detail_pembelian, retur_pembelian

🔹 detail_pembelian
Fungsi: Menyimpan detail item dalam pembelian.

Kolom utama: id_detail_pembelian, id_pembelian, id_barang, jumlah, harga

Relasi:

id_pembelian → FK ke pembelian

id_barang → FK ke barang

🔹 penjualan
Fungsi: Menyimpan transaksi penjualan ke pelanggan.

Kolom utama: id_penjualan, id_pengguna, id_toko, id_pelanggan, id_metode, tanggal_penjualan, grand_total, status_pembayaran

Relasi:

id_pengguna → FK ke pengguna

id_toko → FK ke toko

id_pelanggan → FK ke pelanggan (bisa NULL)

id_metode → FK ke metode_pembayaran

Digunakan oleh: detail_penjualan, retur_penjualan

🔹 detail_penjualan
Fungsi: Detail barang yang dijual per transaksi.

Kolom utama: id_detail_penjualan, id_penjualan, id_barang, jumlah, harga

Relasi:

id_penjualan → FK ke penjualan

id_barang → FK ke barang

🔁 Retur Barang
🔹 retur_pembelian
Fungsi: Mencatat pengembalian barang ke supplier.

Kolom utama: id_retur_pembelian, id_pembelian, id_pengguna, tanggal_retur, total_retur, status

Relasi:

id_pembelian → FK ke pembelian

id_pengguna → FK ke pengguna

⚠️ Hati-hati: id_pembelian harus sudah ada, atau insert akan gagal.

🔹 detail_retur_pembelian
Fungsi: Menyimpan rincian barang yang diretur dari pembelian.

Kolom utama: id_detail_retur_pembelian, id_retur_pembelian, id_barang, jumlah, keterangan

Relasi:

id_retur_pembelian → FK ke retur_pembelian

id_barang → FK ke barang

🔹 retur_penjualan
Fungsi: Mencatat pengembalian barang dari pelanggan.

Kolom utama: id_retur_penjualan, id_penjualan, id_pengguna, tanggal_retur, total_retur, status

Relasi:

id_penjualan → FK ke penjualan

id_pengguna → FK ke pengguna

🔹 detail_retur_penjualan
Fungsi: Menyimpan rincian barang yang dikembalikan oleh pelanggan.

Kolom utama: id_detail_retur_penjualan, id_retur_penjualan, id_barang, jumlah, keterangan

Relasi:

id_retur_penjualan → FK ke retur_penjualan

id_barang → FK ke barang

📊 Lainnya
🔹 stok
Fungsi: Menyimpan stok akhir untuk setiap barang per toko.

Relasi: id_barang → barang, id_toko → toko

🔹 mutasi
Fungsi: Perpindahan stok antar toko.

🔹 retur, jadwal, promo, hutang, pembayaran_hutang, dll
Fungsi tambahan: Keuangan, promosi, penjadwalan, hutang pelanggan, dan pembayaran cicilan.

🔑 PANDUAN INPUT
Hal	Cek dulu
Insert ke detail_penjualan	Pastikan id_penjualan & id_barang sudah ada
Insert ke retur_pembelian	Pastikan id_pembelian & id_pengguna sudah ada
Insert ke detail_retur_pembelian	Pastikan id_retur_pembelian & id_barang sudah ada
Insert ke pengguna	Cek id_role dan id_toko harus valid
Insert ke barang	Cek id_toko valid
Insert ke penjualan	Cek id_pengguna, id_metode, id_toko valid